package br.com.servlets;

import br.com.business.ItemBO;
import br.com.business.ReservaBO;
import br.com.model.Cliente;
import br.com.model.Filme;
import br.com.model.Item;
import br.com.model.TipoMidia;
import br.com.model.Reserva;
import br.com.type.EstadoItem;
import br.com.type.CodigoBarras;
import br.com.type.EstadoReserva;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Date;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author Hercules Sandim
 */
public class CadastroReserva extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public CadastroReserva() {
        super();
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
        //TODO
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Reserva reserva = null;
        Item item = null;
        LinkedList<Item> lista = new LinkedList<Item>();  
        
        int idReserva = 1;
        String estadoReserva = req.getParameter("estadoReserva");   
        String dataR = req.getParameter("datareserva");
        String dataC = req.getParameter("datacomunicacao");
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        String clienteReserva = req.getParameter("cliente");
        String[] itemReserva = req.getParameterValues("item");
        Date dataReserva = null;
        Date dataComunicacao = null;
        try {
            dataReserva = new Date(sdf.parse(dataR).getTime());          
            dataComunicacao = new Date(sdf.parse(dataC).getTime());          
        } catch (ParseException ex) {
            Logger.getLogger(CadastroReserva.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        CodigoBarras codigo;
        Cliente cliente;
        
        if(itemReserva != null){
             for (int i = 0; i < itemReserva.length; i++) {
                try{
                codigo = new CodigoBarras(itemReserva[i]);
                item = new Item(codigo);
                lista.add(item);
                } 
                catch (Exception ex) {
                    Logger.getLogger(CadastroReserva.class.getName()).log(Level.SEVERE, null, ex);
                }
             }
        }
        for(int i=0;i<lista.size();i++){
            Item it = lista.get(i);
            ItemBO itemBo = new ItemBO();
            try {
                itemBo.updateReservado(it);
            }catch (SQLException ex) {
                Logger.getLogger(CadastroReserva.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        
        
        cliente = new Cliente(clienteReserva);
        
      
        
        reserva = new Reserva(idReserva, dataReserva, dataComunicacao , EstadoReserva.valueOf(estadoReserva), lista , cliente);

        ReservaBO reservaBo = new ReservaBO();

        /*
         * Aqui tem que estar comentado, pois n�o existe o banco de dados JDBC
         * MySQL, como no exemplo...
         */
        
        reservaBo.insereReserva(reserva);
         


        //Imprimindo o cliente "capturado", na tela !!!
        PrintWriter out = resp.getWriter();

        out.println("<p>N�mero de inscri��o: " + reserva.getIdReserva()+"</p>");
        out.println("<p>data: " + reserva.getDtReserva()+ "</p>");
        out.println("<p>estado: " + reserva.getDtComunicacaoCliente()+"</p>");
        out.println("<p>tipomidia" + reserva.getEstado().name()+"</p>");
        out.println("<p>tipomidia" + reserva.getCliente().getNumeroInscricao()+"</p>");
        //out.println("<p>filme: " + reserva.getItemsReservados().getFirst()+"</p>");
        
        out.println("<a href='index.jsp'>P�gina Inicial</a>");

        out.close();

    }
}
